//package com.inspur.edp.udt.generator.core.datatypeimpl;
//
//import com.inspur.edp.cef.designtime.api.element.GspElementObjectType;
//import com.inspur.edp.cef.generator.coreGenerator.base.entityGenerator.CefDataTypeImplGeneratorContext;
//import com.inspur.edp.cef.generator.coreGenerator.base.entityGenerator.determinations.DataTypeDtmsGenerator;
//import com.inspur.edp.cef.generator.coreGenerator.base.entityGenerator.validations.DataTypeValidationsGenerator;
//import com.inspur.edp.cef.generator.coreGenerator.base.serializer.DataTypeSerializerGenerator;
//import com.inspur.edp.cef.generator.coreGenerator.valueObjectGenerator.entityGenerator.ValueObjDataTypeImplGenerator;
//import com.inspur.edp.udt.generator.core.UdtCoreGenCtx;
//import com.inspur.edp.udt.generator.core.datatypeimpl.dtms.UdtDtmsGenerator;
//import com.inspur.edp.udt.generator.core.datatypeimpl.serialize.SimpleAssoUdtSerializerGenerator;
//import com.inspur.edp.udt.generator.core.datatypeimpl.vals.UdtValidationsGenerator;
//
//public class UdtDataTypeImplGenerator extends ValueObjDataTypeImplGenerator {
//
//  private UdtCoreGenCtx udtCoreGenContext;
//
//  public UdtDataTypeImplGenerator(UdtCoreGenCtx coreGenContext) {
//    super(coreGenContext, coreGenContext.getUdtGenContext().getUdt());
//    this.udtCoreGenContext = coreGenContext;
//  }
//
//  //C# TO JAVA CONVERTER WARNING: There is no Java equivalent to C#'s shadowing via the 'new' keyword:
////ORIGINAL LINE: private new UdtDataTypeImplGenCtx Context => (UdtDataTypeImplGenCtx)super.Context;
//  private UdtDataTypeImplGenCtx getUdtDataTypeImplContext() {
//    return (UdtDataTypeImplGenCtx) super.getContext();
//  }
//
//  @Override
//  protected CefDataTypeImplGeneratorContext createImplGenContext() {
//    return new UdtDataTypeImplGenCtx(udtCoreGenContext);
//  }
//
//  @Override
//  protected DataTypeDtmsGenerator getDtmGenerator() {
//    return new UdtDtmsGenerator(getUdtDataTypeImplContext());
//  }
//
//  @Override
//  protected String getName() {
//    return String.format("%1$sEntity", udtCoreGenContext.getUdtGenContext().getUdt().getCode());
//  }
//
//
//  @Override
//  protected DataTypeValidationsGenerator getValGenerator() {
//    return new UdtValidationsGenerator(getUdtDataTypeImplContext());
//  }
//
//  @Override
//  protected DataTypeSerializerGenerator getSerializerGenerator() {
//    //TODO: 单值关联udt需要特殊处理序列化, 迫于发版压力现在只能支持数据序列化, 变更集序列化反序列化需要完善性能, data反序列化需要实现
//    if (udtCoreGenContext.getUdtGenContext().getSimpleObjType()== GspElementObjectType.Association) {
//      return new SimpleAssoUdtSerializerGenerator(getContext());
//    } else {
//      return super.getSerializerGenerator();
//    }
//  }
//}